Interrupts are commonly used when one hardware block or unit or a software block or routine (in the following also referred to as the “sender”) requests the attention of another hardware block or unit or software block or routine (in the following also referred to as the “receiver”). A hardware block may refer to logic with or without one or several processors (also referred to as Central Processing Units, CPU).
For example, a first hardware block may request an interrupt of a second hardware block when the first hardware block has completed certain tasks and possibly has generated certain results. Upon receipt of the interrupt, the second hardware block can start processing the result of the first hardware block and thereafter complete its task.
A particular hardware block is a timer. The timer sends an interrupt to a hardware block after a set time has lapsed. Consequently, the hardware block may set a time when it knows that a certain task needs to be carried out and, upon receipt of the interrupt from the timer, switch to that task. In the meantime, the hardware block may carry out other functions.
When a hardware block which is in non-active mode, e.g. sleep mode, receives an interrupt, activities for waking-up the hardware block are initiated. A problem is that such wake-up usually has a cost in terms of time and energy. Similarly, the activities of the hardware block which are required going from active mode to non-active mode also has a cost in terms of time and energy.